28 #define NFC_OUTCOME_UI_MSG_NA 0xFF
29 #define NFC_OUTCOME_UI_MSG_APPROVED 0x03
30 #define NFC_OUTCOME_UI_MSG_NOT_AUTHORISED 0x07
31 #define NFC_OUTCOME_UI_MSG_ENTER_PIN 0x09
32 #define NFC_OUTCOME_UI_MSG_PROCESSING_ERROR 0x0F
33 #define NFC_OUTCOME_UI_MSG_REMOVE_CARD 0x10
34 #define NFC_OUTCOME_UI_MSG_WELCOME 0x14
35 #define NFC_OUTCOME_UI_MSG_PRESENT_CARD 0x15
36 #define NFC_OUTCOME_UI_MSG_PROCESSING 0x16
37 #define NFC_OUTCOME_UI_MSG_CARD_READ_OK_REMOVE_CARD 0x17
38 #define NFC_OUTCOME_UI_MSG_INSERT_OR_SWIPE_CARD 0x18
39 #define NFC_OUTCOME_UI_MSG_PRESENT_ONE_CARD_ONLY 0x19
40 #define NFC_OUTCOME_UI_MSG_APPROVED_SIGN 0x1A
41 #define NFC_OUTCOME_UI_MSG_AUTHORISATION_WAIT 0x1B
42 #define NFC_OUTCOME_UI_MSG_INSERT_OR_SWIPE_OR_TRY_ANOTHER 0x1C
43 #define NFC_OUTCOME_UI_MSG_INSERT_CARD 0x1D
44 #define NFC_OUTCOME_UI_MSG_BLANK 0x1E
45 #define NFC_OUTCOME_UI_MSG_SEE_PHONE_INSTRUCTIONS 0x20
46 #define NFC_OUTCOME_UI_MSG_PRESENT_CARD_AGAIN 0x21
48 #define NFC_OUTCOME_UI_MSG_EXPIRED_ONLINE 0xA0
49 #define NFC_OUTCOME_UI_MSG_EXPIRED_DECLINE 0xA1
61 #define NFC_OUTCOME_UI_NA 0x00
62 #define NFC_OUTCOME_UI_NOT_READY 0x01
63 #define NFC_OUTCOME_UI_IDLE 0x02
64 #define NFC_OUTCOME_UI_READY_TO_READ 0x03
65 #define NFC_OUTCOME_UI_PROCESSING 0x04
66 #define NFC_OUTCOME_UI_CARD_READ_SUCCESS 0x05
67 #define NFC_OUTCOME_UI_ERROR_PROCESSING 0x06
79 #define NFC_OUTCOME_UI_VALUE_NA 0x00
80 #define NFC_OUTCOME_UI_VALUE_AMOUNT 0x01
81 #define NFC_OUTCOME_UI_VALUE_BALANCE 0x02
93 #define NFC_OUTCOME_UI_VERSION_0 0x00
94 #define NFC_OUTCOME_UI_VERSION 0x01
104 #define NFC_OUTCOME_UI_RESET(UI, SIZE) \
107 KER_MEM_SET(UI, SIZE, 0, SIZE); \
108 (UI)->usSize = SIZE; \
109 (UI)->btVersion = NFC_OUTCOME_UI_VERSION; \
110 (UI)->btMessageID = NFC_OUTCOME_UI_MSG_NA; \
111 (UI)->btStatus = NFC_OUTCOME_UI_NA; \
120 #define NFC_OUTCOME_UI_SET_LANG_PREF(UI, TRAN_DATA) \
123 if (((TRAN_DATA) != KER_NULL) && ((TRAN_DATA)->btLangPrefLen > 0)) \
125 (UI)->btLangPrefLen = ((TRAN_DATA)->btLangPrefLen <= sizeof((UI)->ar_btLangPref)) ? (TRAN_DATA)->btLangPrefLen : sizeof((UI)->ar_btLangPref); \
126 KER_MEM_CPY((UI)->ar_btLangPref, sizeof((UI)->ar_btLangPref), (TRAN_DATA)->ar_btLangPref, (UI)->btLangPrefLen); \
136 #define NFC_OUTCOME_UI_INIT(UI, SIZE, TRAN_DATA) \
139 NFC_OUTCOME_UI_RESET((UI), (SIZE)); \
140 NFC_OUTCOME_UI_SET_LANG_PREF((UI), (TRAN_DATA)); \
178 #define NFC_OUTCOME_TYPE_NA 0x00
179 #define NFC_OUTCOME_TYPE_SELECT_NEXT 0x01
180 #define NFC_OUTCOME_TYPE_TRY_AGAIN 0x02
181 #define NFC_OUTCOME_TYPE_TRY_ANOTHER_INTERFACE 0x03
182 #define NFC_OUTCOME_TYPE_APPROVED 0x11
183 #define NFC_OUTCOME_TYPE_DECLINED 0x12
184 #define NFC_OUTCOME_TYPE_ONLINE_REQUEST 0x21
185 #define NFC_OUTCOME_TYPE_ONLINE_PIN 0x22
186 #define NFC_OUTCOME_TYPE_END_APPLICATION 0xF1
187 #define NFC_OUTCOME_TYPE_CUSTOM 0xFA
199 #define NFC_OUTCOME_CVM_NA 0x00
200 #define NFC_OUTCOME_CVM_NO_CVM 0x1F
201 #define NFC_OUTCOME_CVM_ONLINE_PIN 0x02
202 #define NFC_OUTCOME_CVM_CD_CVM 0x20
203 #define NFC_OUTCOME_CVM_SIGNATURE 0x1E
204 #define NFC_OUTCOME_CVM_CUSTOM 0xFF
216 #define NFC_OUTCOME_OPT_UI 0x0001
217 #define NFC_OUTCOME_OPT_UI_RESTART 0x0002
218 #define NFC_OUTCOME_OPT_DATA_RECORD 0x0004
219 #define NFC_OUTCOME_OPT_DISCRETIONARY_DATA 0x0008
220 #define NFC_OUTCOME_OPT_RECEIPT 0x0010
221 #define NFC_OUTCOME_OPT_FIELD_OFF_REQUEST 0x0020
233 #define NFC_OUTCOME_START_TYPE_NA 0x00
234 #define NFC_OUTCOME_START_TYPE_A 0x01
235 #define NFC_OUTCOME_START_TYPE_B 0x02
236 #define NFC_OUTCOME_START_TYPE_C 0x03
237 #define NFC_OUTCOME_START_TYPE_D 0x04
249 #define NFC_OUTCOME_RESPONSE_NA 0x00
250 #define NFC_OUTCOME_RESPONSE_EMV_DATA 0x01
251 #define NFC_OUTCOME_RESPONSE_ANY 0x02
263 #define NFC_OUTCOME_ALT_NA 0x00
264 #define NFC_OUTCOME_ALT_MASK_CHIP 0x01
265 #define NFC_OUTCOME_ALT_MASK_MS 0x02
277 #define NFC_OUTCOME_IND_MS_MODE 0x01
278 #define NFC_OUTCOME_IND_EMV_MODE 0x02
279 #define NFC_OUTCOME_IND_CD_CVM_REQUESTED 0x04
280 #define NFC_OUTCOME_IND_EMPTY_CL 0x08
281 #define NFC_OUTCOME_IND_APDU_RRP_TIMEOUT 0x10
282 #define NFC_OUTCOME_IND_MAND_CPLC_MISSED 0x20
294 #define NFC_OUTCOME_VERSION_0 0x00
295 #define NFC_OUTCOME_VERSION 0x01
305 #define NFC_OUTCOME_RESET(DATA, SIZE) \
308 KER_MEM_SET(DATA, SIZE, 0, SIZE); \
309 (DATA)->usSize = SIZE; \
310 (DATA)->btVersion = NFC_OUTCOME_VERSION; \
311 (DATA)->btOutcomeType = NFC_OUTCOME_TYPE_NA; \
312 (DATA)->btStart = NFC_OUTCOME_START_TYPE_NA; \
313 (DATA)->btOnlineResponse = NFC_OUTCOME_RESPONSE_NA; \
314 (DATA)->btCVM = NFC_OUTCOME_CVM_NA; \
315 (DATA)->btAltInterfacePreference = NFC_OUTCOME_ALT_NA; \
316 NFC_OUTCOME_UI_RESET(&(DATA)->UI, sizeof((DATA)->UI)); \
317 NFC_OUTCOME_UI_RESET(&(DATA)->UIRestart, sizeof((DATA)->UIRestart)); \
326 #define NFC_OUTCOME_INIT(DATA, SIZE, TRAN_DATA) \
329 NFC_OUTCOME_RESET((DATA), (SIZE)); \
330 NFC_OUTCOME_UI_INIT(&(DATA)->UI, sizeof((DATA)->UI), (TRAN_DATA)); \
331 NFC_OUTCOME_UI_INIT(&(DATA)->UIRestart, sizeof((DATA)->UIRestart), (TRAN_DATA)); \
340 #define NFC_OUTCOME_CHECK(OUTCOME, MIN_SIZE, MIN_VER) (((OUTCOME) != KER_NULL) && ((OUTCOME)->usSize >= (MIN_SIZE)) && ((OUTCOME)->btVersion >= (MIN_VER)))
uint8_t KER_BYTE
Definition: emv_platform.h:70
unsigned int KER_INT32U
Definition: emv_platform.h:63
unsigned short KER_INT16U
Definition: emv_platform.h:61
struct tag_NFC_OUTCOME NFC_OUTCOME
Outcome User Interface struct definition, version 0.
struct tag_NFC_OUTCOME_UI NFC_OUTCOME_UI
Outcome User Interface struct definition, version 0.
Outcome User Interface struct definition, version 0.
Definition: nfc_outcome.h:152
KER_INT16U usSize
Definition: nfc_outcome.h:153
KER_INT16U btVersion
Definition: nfc_outcome.h:154
KER_BYTE btLangPrefLen
Definition: nfc_outcome.h:166
KER_BYTE btStatus
Definition: nfc_outcome.h:157
KER_BYTE ar_btLangPref[8]
Definition: nfc_outcome.h:165
KER_BYTE btValueQualifier
Definition: nfc_outcome.h:161
KER_BYTE btValueLen
Definition: nfc_outcome.h:162
KER_BYTE btMessageID
Definition: nfc_outcome.h:156
KER_INT32U ulHoldTime
Definition: nfc_outcome.h:158
KER_BYTE ar_btCurrCode[2]
Definition: nfc_outcome.h:160
KER_BYTE ar_btValue[6]
Definition: nfc_outcome.h:163
Outcome User Interface struct definition, version 0.
Definition: nfc_outcome.h:350
KER_BYTE btOnlineResponse
Definition: nfc_outcome.h:356
KER_INT16U usSize
Definition: nfc_outcome.h:351
KER_BYTE btStart
Definition: nfc_outcome.h:355
KER_INT16U usFieldOffTimeout
Definition: nfc_outcome.h:362
KER_BYTE btOutcomeType
Definition: nfc_outcome.h:354
KER_INT32U ulOptions
Definition: nfc_outcome.h:358
KER_INT32U ulIndicators
Definition: nfc_outcome.h:365
KER_BYTE btVersion
Definition: nfc_outcome.h:352
NFC_OUTCOME_UI UI
Definition: nfc_outcome.h:359
KER_BYTE btCVM
Definition: nfc_outcome.h:357
KER_BYTE btAltInterfacePreference
Definition: nfc_outcome.h:361
NFC_OUTCOME_UI UIRestart
Definition: nfc_outcome.h:360
KER_INT16U usRemovalTimeout
Definition: nfc_outcome.h:363